package com.ruoyi.ok.service.impl;

import com.ruoyi.ok.domain.TbOk;
import com.ruoyi.ok.mapper.TbOkMapper;
import com.ruoyi.ok.service.ITbOkService;
import org.apache.commons.collections4.CollectionUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import java.util.List;
import java.util.Objects;

/**
 * 点赞Service业务层处理
 * 
 * @author 劳雅玲
 * @date 2024-05-04
 */
@Service
public class TbOkServiceImpl implements ITbOkService 
{
    @Autowired
    private TbOkMapper tbOkMapper;

    /**
     * 查询点赞
     * 
     * @param id 点赞主键
     * @return 点赞
     */
    @Override
    public TbOk selectTbOkById(Long id)
    {
        return tbOkMapper.selectTbOkById(id);
    }

    /**
     * 查询点赞列表
     * 
     * @param tbOk 点赞
     * @return 点赞
     */
    @Override
    public List<TbOk> selectTbOkList(TbOk tbOk)
    {
        return tbOkMapper.selectTbOkList(tbOk);
    }

    /**
     * 新增点赞
     * 
     * @param tbOk 点赞
     * @return 结果
     */
    @Override
    public int insertTbOk(TbOk tbOk)
    {
        return tbOkMapper.insertTbOk(tbOk);
    }

    /**
     * 修改点赞
     * 
     * @param tbOk 点赞
     * @return 结果
     */
    @Override
    public int updateTbOk(TbOk tbOk)
    {
        return tbOkMapper.updateTbOk(tbOk);
    }

    /**
     * 批量删除点赞
     * 
     * @param ids 需要删除的点赞主键
     * @return 结果
     */
    @Override
    public int deleteTbOkByIds(Long[] ids)
    {
        return tbOkMapper.deleteTbOkByIds(ids);
    }

    /**
     * 删除点赞信息
     * 
     * @param id 点赞主键
     * @return 结果
     */
    @Override
    public int deleteTbOkById(Long id)
    {
        return tbOkMapper.deleteTbOkById(id);
    }

    @Override
    public int cancel(TbOk tbOk) {
        // 参数校验
        if (Objects.isNull(tbOk.getUserId()) || Objects.isNull(tbOk.getPostId())){
            return -1;
        }
        tbOk.setOkCount(1L);

        // 先查询tb_ok表，
        List<TbOk> tbOks = selectTbOkList(tbOk);

        // 如果有数据 就调用删除接口
        if (CollectionUtils.isNotEmpty(tbOks)){
            deleteTbOkById(tbOks.get(0).getId());
            return 1;
        }

        // 如果没有数据，就调用增加接口
        if (CollectionUtils.isEmpty(tbOks)){
            insertTbOk(tbOk);
            return 1;
        }

        return -1;
    }
}
